package com.dhj.jvmstudy.chapter04;

/**
 * 操作数栈
 */
public class OperandStackTest {

    public void testAddOperation(){
        // byte、short、char、boolean 都以int型来保存
        byte i = 15;
        int j = 8;
        int k = i + j;

        // int m = 8000;
    }

    public int getSum(){
        int m = 10;
        int n = 20;
        int k = m + n;
        return k;
    }

    public void testGetSum(){
        // 获取上一个栈帧的返回结果，并保存在操作数栈中
        int i = getSum();
        int j = 10;
    }

    /**
     * 程序员面试过程中，常见的i++和++i的区别，放到字节码篇章时再介绍
     */
    public void add(){
        // 第一类问题
        int i1 = 10;
        i1++;  // 11

        int i2 = 10;
        ++i2;  // 11


        // 第二类问题
        int i3 = 10;
        int i4 = i3++;  // 10

        int i5 = 10;
        int i6 = ++i5;  // 11


        // 第三类问题
        int i7 = 10;
        i7 = i7++;   // 11

        int i8 = 10;
        i8 = ++i8;  // 11


        // 第四类问题
        int i9 = 10;
        int i10 = i9++ + ++i9; // 22

    }


}
